package com.loopy.fruns.entity;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

public class Cart {


    private Map<Integer, CartItem> items = new HashMap<>();

    public Integer getTotalCount() {
        Integer totalCount = 0;
        for (CartItem value : items.values()) {
            totalCount += value.getCount();
        }
        return totalCount;
    }


    public void addItem(CartItem item) {
        CartItem cartItem = items.get(item.getId());
        if (null == cartItem) {
            items.put(item.getId(), item);
        } else {
//            cartItem.setCount(cartItem.getCount()+item.getCount());
            cartItem.setCount(cartItem.getCount() + 1);
//            cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount())));
            cartItem.setTotalPrice(cartItem.getTotalPrice().add(cartItem.getPrice()));
        }
    }


    @Override
    public String toString() {
        return "Cart{" +
                "items=" + items +
                '}';
    }

    public void deleteItems(Integer id) {
        items.remove(id);
    }

    public void clear() {
        items.clear();
    }

    public void updateCount(Integer id, Integer count) {
        CartItem cartItem = items.get(id);
        if (null != cartItem) {
            cartItem.setCount(count);
            cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount())));
        }

    }


    public BigDecimal getTotalPrice() {
        BigDecimal b = new BigDecimal(0);
        for (CartItem value : items.values()) {
            b = b.add(value.getTotalPrice());
        }
        return b;
    }

    public boolean isEmpty() {
        return items.size() == 0;
    }


    public Map<Integer, CartItem> getItems() {
        return items;
    }
}
